package com.xndc.netty.iec104.model;

import lombok.Data;

/**
 * 信息元素
 */
@Data
public class InformationElement {
    
    /**
     * 元素值（可能是不同类型，如布尔、浮点数、整数等）
     */
    private Object value;
    
    /**
     * 质量描述符
     */
    private byte quality;
    
    /**
     * 时标
     */
    private byte[] timestamp;
    
    /**
     * 获取布尔值
     */
    public boolean getBoolean() {
        if (value instanceof Boolean) {
            return (Boolean) value;
        }
        return false;
    }
    
    /**
     * 设置布尔值（单点命令）
     */
    public void setSingleCommand(boolean value) {
        this.value = value;
    }
    
    /**
     * 获取浮点值
     */
    public float getFloat() {
        if (value instanceof Float) {
            return (Float) value;
        }
        return 0.0f;
    }
    
    /**
     * 获取规一化值（-1.0到+1.0之间）
     */
    public float getNormalizedValue() {
        if (value instanceof Short) {
            short normalizedValue = (Short) value;
            return normalizedValue / 32767.0f;
        }
        return 0.0f;
    }
    
    @Override
    public String toString() {
        return String.valueOf(value);
    }
} 